package com.example.homework.homework03;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        // 1.创建一个集合，存储5个User对象
        List<User> list = new ArrayList<>();
        // 2.添加测试数据
        list.add(new User("jack", "123"));
        list.add(new User("李四", "456"));
        list.add(new User("王五", "789"));

        while (true) {
            // 3.接收用户输入的信息
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入用户名：");
            String username = sc.next();
            // 编写一个方法判断用户是否已经注册了
            User user = isRegister(username, list);
            if (user != null) {
                // 说明用户已经注册了
                System.out.println("用户已注册，请直接登录");
            } else {
                // 用户没有注册
                System.out.println("用户未注册，请先注册");
                System.out.print("请输入密码：");
                String password = sc.next();
                list.add(new User(username, password));
                System.out.println("注册成功");
                // 显示集合中的所有元素
                showUser(list);
                break;
            }
        }
    }

    /**
     * 使用迭代器显示集合中的所有元素
     * @param list 存储用户的集合
     */
    private static void showUser(List<User> list) {
        System.out.println("当前集合中的元素如下：");
        Iterator<User> iterator = list.iterator();
        while (iterator.hasNext()) {
            User user = iterator.next();
            System.out.println(user.getName()+":"+user.getPassword());
        }
    }

    /**
     * 判断用户是否已经注册了
     * @param username 用户名
     * @param list 存储用户的集合
     * @return 返回用户对象，如果为null 说明该用户没有注册
     */
    private static User isRegister(String username, List<User> list) {
        // 根据名字去集合中查找是否存在
        for (User u : list) {
            // 判断用户名是否相等
            if (u.getName().equals(username)) {
                return u;
            }
        }
        return null;
    }
}
